create table INVMB (
MB002 nvarchar(50)
);
insert into INVMB
values('箱test')
,('夾test')
,('鋁test')
,('notest');
SELECT MB002,CASE WHEN MB002 like '%箱%' Then '箱子'
WHEN MB002 like '%夾%' Then '夾鏈袋'
WHEN MB002 like '%鋁%' Then '鋁箔包'
ELSE '查無品名' END AS 品名 from INVMB
drop table INVMB
謝謝! 我沒說明清楚,應該是有MB001=>品號
MB002=>品名 (品名的敘述是 '品號'+'XXXX紙箱')
大大的結果是品號全部,我要的是僅秀出'紙箱'
不懂你的要求 要不你 create 一張測試資料?
如果僅要查詢時分組 作法應該差不多
creat table INVMB (MB001 nvarchar(50),MB002 nvarchar(50))
insert into INVMB
values(TH030100001,TH030100001紙箱),
values(TH030100002,TH030100002鋁箔袋),
values(TH030100003,TH030100003烏拉拉彩盒)
如何建立變數@strN ,@strR 回傳@strN=charindex('紙',MB002)
@strR=2
回傳@strN=charindex('鋁',MB002)
@strR=3 ,select substring(MB002,@strN,@StrR)
1.語法有錯
2.您給的要求我有點難理解,是想要建立兩個變數
@strN 裝字串起始值, @strR 依品名分類SET長度?
3.姑且寫了一版看看是不是您需要的,以目前的資訊我只能幫到這裡了
CREATE TABLE INVMB (MB001 NVARCHAR(50),MB002 NVARCHAR(50))
INSERT INTO INVMB
VALUES('TH030100001','TH030100001紙箱'),
('TH030100002','TH030100002鋁箔袋'),
('TH030100003','TH030100003烏拉拉彩盒'),
('TH030100004','TH030100004夾鏈袋'),
('TH030100005','TH030100005大紙箱'),
('TH030100006','TH030100006小紙箱')
--DECLARE @strR INT,@strN INT,@strt NVARCHAR(30)
DECLARE @str1 NVARCHAR(20),@str2 NVARCHAR(20),@str3 NVARCHAR(20)
SET @str1 = '紙箱';
SET @str2 = '鋁箔袋';
SET @str3 = '夾鏈袋';
SELECT CASE WHEN MB002 like '%'+@str1+'%' Then @str1
WHEN MB002 like '%'+@str2+'%' Then @str2
WHEN MB002 like '%'+@str3+'%' Then @str3
ELSE '查無品名' END AS 分類
FROM INVMB
DROP TABLE INVMB
感謝您!!!